package com.yingcheng.numerology.framework.bazi.core.enums;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
 * 干支方位旺季表
 *
 * @author xiaofeng
 * @date 2025/1/10 22:27
 */
@Getter
@RequiredArgsConstructor
public enum StemsAndBranchesDirectionTableEnum implements FieldEnumerable<StemsAndBranchesDirectionTableEnum>{

    /**
     * 东方位旺季
     */
    EAST(DirectionEnum.EAST, FourSeasonsEnums.SPRING,
            new HeavenlyStemsEnum[]{HeavenlyStemsEnum.JIA, HeavenlyStemsEnum.YI},
            new EarthlyBranchesEnum[]{EarthlyBranchesEnum.YIN, EarthlyBranchesEnum.MAO}
    ),

    /**
     * 南方位旺季表
     */
    SOUTH(DirectionEnum.SOUTH, FourSeasonsEnums.SUMMER,
            new HeavenlyStemsEnum[]{HeavenlyStemsEnum.BING, HeavenlyStemsEnum.DING},
            new EarthlyBranchesEnum[]{EarthlyBranchesEnum.SI, EarthlyBranchesEnum.WU}
    ),

    /**
     * 西方位旺季表
     */
    WEST(DirectionEnum.WEST, FourSeasonsEnums.AUTUMN,
            new HeavenlyStemsEnum[]{HeavenlyStemsEnum.GENG, HeavenlyStemsEnum.XIN},
            new EarthlyBranchesEnum[]{EarthlyBranchesEnum.SHEN, EarthlyBranchesEnum.YOU}),

    /**
     * 北方位旺季表
     */
    NORTH(DirectionEnum.NORTH, FourSeasonsEnums.WINTER,
            new HeavenlyStemsEnum[]{HeavenlyStemsEnum.REN, HeavenlyStemsEnum.GUI},
            new EarthlyBranchesEnum[]{EarthlyBranchesEnum.HAI, EarthlyBranchesEnum.ZI}),

    /**
     * 中央方位旺季表
     */
    CENTRAL(DirectionEnum.CENTRAL, FourSeasonsEnums.FOUR_SEASONS_END,
            new HeavenlyStemsEnum[]{HeavenlyStemsEnum.WU, HeavenlyStemsEnum.JI},
            new EarthlyBranchesEnum[]{EarthlyBranchesEnum.CHEN, EarthlyBranchesEnum.XU, EarthlyBranchesEnum.CHOU,
                    EarthlyBranchesEnum.WEI});

    /**
     * 方位
     */
    private final DirectionEnum direction;

    /**
     * 四季
     */
    private final FourSeasonsEnums fourSeasons;

    /**
     * 天干
     */
    private final HeavenlyStemsEnum[] heavenlyStems;

    /**
     * 地支
     */
    private final EarthlyBranchesEnum[] earthlyBranches;
}
